//
// Created by zx208 on 2024/10/16.
//

// 已知在一维数组A中依次存放着两个顺序表a和b
// 试编写程序，将数组中两个顺序表的位置互换，即将b放在a的前面。

#include "../SequenceList.h"

Status Reverse_Part_SL(SqList *L, int m, int n){
    // 思路：如果使用通用思维 开一个新数组 然后通过双指针来进行交换 难度较高
    // 在这里 可以通过整体逆置+局部逆置来进行互换

    ElemType temp;

    // 先将整体进行逆置
    for (int i = 0, j = L->length - 1; i < j; ++i, --j) {
        temp = L->elem[i];
        L->elem[i] = L->elem[j];
        L->elem[j] = temp;
    }

    //在进行局部逆置
    for(int i = 0, j = m; i < j; i++, --j){
        temp = L->elem[i];
        L->elem[i] = L->elem[j];
        L->elem[j] = temp;
    }
    for(int i = n, j = L->length-1; i < j; i++, --j){
        temp = L->elem[i];
        L->elem[i] = L->elem[j];
        L->elem[j] = temp;
    }

    return OK;
}

int main(void){
    SqList L;
    int a[] = {1,2,4,5,6};
    int m = 2, n = 3;
    L.elem = a;
    L.length = sizeof a / sizeof( int);
    Reverse_Part_SL(&L, m, n);
    for (int i = 0; i < L.length; ++i) {
        printf("%d ", L.elem[i]);
    }
    return 0;
}